home *** CD-ROM | disk | FTP | other *** search
- ------------------------------------------------------------------------
- MusClick.TXT
- The documentation below is for the .BIN file: MUSCLICK.BIN
- and is taken from the header for MusClick.ASM.
- ------------------------------------------------------------------------
- Programmers: Jay Parsons (Jparsons)
- and Ken Chan (HazMatZak)
- Inspiration: Bowen Moursund (Bowen)
- and the folks at BORBBS
- Date: July 6, 1992
- Version: 1.1
-
- NOTE: This can be downloaded with it's .ASM file from
- the DBASE forum on CompuServe, Library 4, as MCLICK.ZIP.
-
- dBASE usage syntax, after LOAD musclick:
-
- cSuccess = call( "MUSCLICK", "I", [<arg2>] ) && install
- cSuccess = call( "MUSCLICK", "U" ) && uninstall
-
- store chr( 255 ) TO cMRow, cMCol
- call MUSCLICK with cMRow, cMCol && report row, col
- nMRow = asc( cMRow )
- nMCol = asc( cMCol )
-
- A call with "I" must be made to install the alternate mouse
- event handler for this to work. After that call, this .bin
- will push a Ctrl-PgUp, or the character specified in the optional
- <arg2> argument to the "I" call, into the BIOS buffer when
- the left mouse button is released. The <arg2> character must be
- a chr() value from 1 to 254, or the argument may be a string
- composed of two chr() values, the first of which is chr(255) and
- the second of which is the chr() value of the second (high) byte
- of an extended code for a key or key combination that has no
- ASCII value.
-
- For example, a call with a second argument of chr(255) + chr(97)
- will stuff Ctrl-F4. It is likely that you will want to use a
- key or key combination that has an inkey() and that works with
- ON KEY. Note that the extended codes are always positive
- and not always the same as the inkey() values.
-
- The installation call will return "T" if successful, and "F" if not.
-
- If the BIOS buffer happens to be full when the mouse button is
- released, the click will go unreported, but the row and column
- will be updated.
-
- If you wish a default character different from Ctrl-PgUp, change
- the DEFAULTKEY value before assembly. For an extended code,
- set it to the value of the second byte * 256 (100h). The ESC key
- is the only key that will attract dBASE's attention in the middle
- of a dBASE operation such as "LIST" or "INDEX". However, that
- operation will be cancelled if ESC is pressed, so consider what is
- going on and whether you want to have it recognize a click.
-
- Calls to get the row and column must have the first argument
- be chr(255), and must have a second argument. Both MUST be
- variables. A call to find the row and column if no "I" call has
- been made, or no clicks have occurred, will return chr(255) for
- each. The row and column reported are those as of the last click,
- which are not necessarily those current at the time of the call.
- They are determined by dividing the values in pixels reported by
- the mouse by 8 each and ignoring any remainder.
-
- After one call has been made to get the mouse row and column,
- subsequent calls to get the row and column will return chr(254) for
- each if no click has occurred since the previous call. This allows
- the dBASE program to differentiate between actual keypresses
- and "keypresses" made by this routine to report mouse clicks.
-
- The recommended way to test for an actual mouse click is to see if
- the row value returned is below 200; all row values 200 and above
- are reserved for future expansion (only 254 and 255 are currently
- used).
-
- A call with "U" should be made to uninstall the alternate event
- handler before installing it with a different key, and also
- before ending the dBASE program for safety. Repeated calls to
- install the handler without uninstalling it will overwrite the
- address of the dBASE handler and prevent restoring it.
-
- The dBASE mouse-event handler is disabled while the one in this
- .bin is installed. Consequently, dBASE will not know of the
- current mouse position or click status, and calls to the .bins
- in the recent Technotes article, uploaded as MOUSE_FU.TXT, will
- not return correct information. Use this .bin or those, but not
- both at once.
-
- Following are as specified by Microsoft for its mouse:
-
- Register usage on call of an alternate event handler
-
- AX = condition mask ( bits 0-4 set for events occurred )
- BX = button state ( bit 0 set if left button pressed;
- bit 1 if right; bit 2, center.)
- <unused>
- CX = horizontal mouse cursor coordinate in pixels
- DX = vertical " " " " "
- SI = last horizontal mickey count ( vertical? ) <unused>
- DI = last vertical mickey count ( horizontal? ) <unused>
- DS = mouse driver data segment <unused>
-
- Event mask bits, 1 to respond to that event:
- 0 = mouse has moved ( value 1 )
- 1 = left button pressed ( value 2 )
- 2 = left button released ( value 4 )
- 3 = right button pressed ( value 8 )
- 4 = right button released ( value 16 )
-
- Thus, if our handler were to be called whenever the mouse moved
- or either button were released, the mask would be 10101, or
- 16 + 4 + 1, decimal value 21, rather than the 4 we use because
- we care only about release of the left button.
-
- If an event not specified in our event mask occurs, our handler
- will not be called at all. If the left button is released, it
- will be called. AX, the condition mask, will report all events
- that have occurred, not only the one specified in the event mask.
-
- ------------------------------------------------------------------------
- End of File: MUSCLICK.TXT
- ------------------------------------------------------------------------